package main

import (
	"fmt"
	"strings"
)

// 1408. 数组中的字符串匹配
// 给你一个字符串数组 words ，数组中的每个字符串都可以看作是一个单词。
// 请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。

// 如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] ，
// 那么字符串 words[i] 就是 words[j] 的一个子字符串。

func stringMatching(words []string) []string {
	// 单词连接，然后搜索两次，若两次都能搜索成功，则属于子字符串；暴力法
	// 寻找子串匹配
	allWords := strings.Join(words, "#")
	var res []string
	// 每个单词搜索两次
	for _, word := range words {
		if strings.Count(allWords, word) >= 2 {
			res = append(res, word)
		}
		// if strings.Index(allWords,word) != strings.LastIndex(allWords,word) {
		// 	res = append(res, word)
		// }
	}
	return res
}

func main() {
	words := []string{"leetcoder", "leetcode", "od", "hamlet", "am"}
	res := stringMatching(words)
	fmt.Println(res)
}
